import {
	fixedRouter,
	dynamicRouter
} from '@/router'
import router from '@/router'
var addRouFlag = false

router.beforeEach((to, from, next) => { //设置路由守卫
	//判断临时存储的账户是否有值，有的话代表已经登录不需要重新登录，否则需要跳到登录路由
	if (sessionStorage.getItem("name")) {
		//登录后进行权限路由菜单的动态生成
		next()
		let toke = sessionStorage.getItem('power'); //登录时保存在临时存储的权限列表
		let showme = [];
		let menu = [];
		if (!addRouFlag) {
			addRouFlag = true;
			if (toke.includes('*')) {
				console.log(1)
				showme = [...fixedRouter, ...dynamicRouter];
				dynamicRouter.forEach((item, index) => { //根据权限循环生成主页要显示的导航菜单
					menu.push({
						name: item.meta.title,
						loc: "el-icon-s-data",
						children: []
					}) //生成一级树
					item.children.forEach(icu => {
						if (icu.meta.title != ''&icu.meta.title != '优惠劵详情'&icu.meta.title != '专题创建'&icu.meta.title != '专题编辑') {
							menu[index].children.push({
								name: icu.meta.title,
								path: icu.meta.path
							}) //生成二级树
						}
					})
				})
			} else {
				console.log(2)
				let arr = []
				let power = toke.split(",") //此时权限列表已是一个数组
				dynamicRouter.forEach((item, index) => {
					arr.push({
						path: item.path,
						component: item.component,
						meta: item.meta,
						children: []
					}) //追加所有列表名并定义一个空的数组保存存在的子级
					item.children.forEach(itt => { //循环子级和所有的权限对比
						power.forEach(icu => {
							itt.meta.perms.forEach(icon => { //继续循环子级
								if (icon == icu) { //将符合条件的子级追加给arr的子级数组
									arr[index].children.push(itt) //追加拥有权限的子菜单名
								}
							})
						})
					})
				})
				//过滤掉不需要的数据----去除前面第一级追加数据时无用的空数据
				arr = arr.filter(item => {
					if (item.children.length > 0) {
						return item //将有值得元素返回去
					}
				})
				arr.forEach(item => { //子级循环时携带了重复的无用值，使用去重净化掉
					item.children = [...new Set(item.children)] //数组去重
				})
				arr.forEach((item, index) => { //根据权限循环生成主页要显示的导航菜单
					menu.push({
						name: item.meta.title,
						loc: "el-icon-s-data",
						children: []
					}) //生成一级树
					item.children.forEach(icu => {
						menu[index].children.push({
							name: icu.meta.title,
							path: icu.meta.path
						}) //生成二级树
					})
				})
				showme = [...fixedRouter, ...arr]
			}
			// let menu = [] //保存动态生成的菜单
			global.antRouter = menu //将处理好的和权限对应的菜单给全局
			router.addRoutes(showme)
			next({
				path: to.path
			})
		}

	} else {
		if (to.path == "/login") {
			next()
		} else {
			next({
				path: "/login"
			})
		}

	}
})
